﻿using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using popLib.ExtensionClass;
using popLib;
namespace PhotoMgr.src.common
{
    class ValidationMessage
    {
        private static ValidationMessage _validationmessage;
        private static string file_config = FileLib.getFullPath("config\\ValidationMessage.ini");
        private INISetting config;

        public static ValidationMessage Singleton()
        {
            if (_validationmessage == null)
                _validationmessage = new ValidationMessage(file_config);

            return _validationmessage;
        }

        public ValidationMessage(string file_config)
        {
            file_config = Path.IsPathRooted(file_config) ? file_config : FileLib.getFullPath(file_config);
            string path = Path.GetDirectoryName(file_config);
            if (!Directory.Exists(path)) Directory.CreateDirectory(path);
            config = new INISetting(file_config);
            LoadConfig();
            config.Save();
        }

        public void LoadConfig()
        {
            _ValidateGroupRadioButton = config.GetValue("ErrorMessage", "ValidateGroupRadioButton", "Xin vui lòng đánh dấu vào một lựa chọn");
            _ValidateGroupCheckBox = config.GetValue("ErrorMessage", "ValidateGroupCheckBox", "Xin vui lòng đánh dấu ít nhất [MIN] lựa chọn");
            _ValidateCheckedListBox = config.GetValue("ErrorMessage", "ValidateCheckedListBox", "Xin vui lòng đánh dấu ít nhất [MIN] lựa chọn");
            _ValidateListBox = config.GetValue("ErrorMessage", "ValidateListBox", "Xin vui lòng chọn ít nhất [MIN] lựa chọn");
            _ValidateCombobox = config.GetValue("ErrorMessage", "ValidateCombobox", "Xin vui lòng chọn một lựa chọn trong danh sách");
            _ValidateBirthday = config.GetValue("ErrorMessage", "ValidateBirthday", "Tuổi hợp lệ phải từ [MIN] đến [MAX] tuổi");
            _ValidateBirthdayMin = config.GetValue("ErrorMessage", "ValidateBirthdayMin", "Tuổi hợp lệ phải lớn hơn [MIN] tuổi");
            _ValidateBirthdayMax = config.GetValue("ErrorMessage", "ValidateBirthdayMax", "Tuổi hợp lệ phải nhỏ hơn [MAX] tuổi");
            _ValidatePhone = config.GetValue("ErrorMessage", "ValidatePhone", "Xin vui lòng nhập một số điện thoại");
            _ValidatePhoneMobile = config.GetValue("ErrorMessage", "ValidatePhoneMobile", "Xin vui lòng nhập một số điện thoại di động hợp lệ (bắt đầu bằng số 0)");
            _ValidateText = config.GetValue("ErrorMessage", "ValidateText", "Xin vui lòng nhập từ [MIN] đến [MAX] ký tự");
            _ValidateTextMin = config.GetValue("ErrorMessage", "ValidateTextMin", "Xin vui lòng nhập ít nhất [MIN] ký tự");
            _ValidateTextMax = config.GetValue("ErrorMessage", "ValidateTextMax", "Xin vui lòng nhập nhiều nhất là [MAX] ký tự");
            _ValidateEmail = config.GetValue("ErrorMessage", "ValidateEmail", "Xin vui lòng nhập địa chị email");
            _ValidateMoney = config.GetValue("ErrorMessage", "ValidateMoney", "Xin vui lòng nhập [NAME] từ [MIN] đến [MAX]");
            _ValidateMoneyMin = config.GetValue("ErrorMessage", "ValidateMoneyMin", "Xin vui lòng nhập [NAME] ít nhất là [MIN]");
            _ValidateMoneyMax = config.GetValue("ErrorMessage", "ValidateMoneyMax", "Xin vui lòng nhập [NAME] không vượt quá [MAX]");
            _ValidateNumber = config.GetValue("ErrorMessage", "ValidateNumber", "Xin vui lòng nhập [NAME] từ [MIN] đến [MAX]");
            _ValidateNumberMin = config.GetValue("ErrorMessage", "ValidateNumberMin", "Xin vui lòng nhập [NAME] ít nhất là [MIN]");
            _ValidateNumberMax = config.GetValue("ErrorMessage", "ValidateNumberMax", "Xin vui lòng nhập [NAME] không vượt quá [MAX]");
        }

        public void SaveConfig()
        {
            config.SetValue("ErrorMessage", "ValidateGroupRadioButton", _ValidateGroupRadioButton.ToString());
            config.SetValue("ErrorMessage", "ValidateGroupCheckBox", _ValidateGroupCheckBox.ToString());
            config.SetValue("ErrorMessage", "ValidateCheckedListBox", _ValidateCheckedListBox.ToString());
            config.SetValue("ErrorMessage", "ValidateListBox", _ValidateListBox.ToString());
            config.SetValue("ErrorMessage", "ValidateCombobox", _ValidateCombobox.ToString());
            config.SetValue("ErrorMessage", "ValidateBirthday", _ValidateBirthday.ToString());
            config.SetValue("ErrorMessage", "ValidateBirthdayMin", _ValidateBirthdayMin.ToString());
            config.SetValue("ErrorMessage", "ValidateBirthdayMax", _ValidateBirthdayMax.ToString());
            config.SetValue("ErrorMessage", "ValidatePhone", _ValidatePhone.ToString());
            config.SetValue("ErrorMessage", "ValidatePhoneMobile", _ValidatePhoneMobile.ToString());
            config.SetValue("ErrorMessage", "ValidateText", _ValidateText.ToString());
            config.SetValue("ErrorMessage", "ValidateTextMin", _ValidateTextMin.ToString());
            config.SetValue("ErrorMessage", "ValidateTextMax", _ValidateTextMax.ToString());
            config.SetValue("ErrorMessage", "ValidateEmail", _ValidateEmail.ToString());
            config.SetValue("ErrorMessage", "ValidateMoney", _ValidateMoney.ToString());
            config.SetValue("ErrorMessage", "ValidateMoneyMin", _ValidateMoneyMin.ToString());
            config.SetValue("ErrorMessage", "ValidateMoneyMax", _ValidateMoneyMax.ToString());
            config.Save();
        }

        private bool _AutoSave = true;
        public bool AutoSave { get { return _AutoSave; } set { _AutoSave = value; } }

        private string _ValidateGroupRadioButton;
        public string ValidateGroupRadioButton { get { return _ValidateGroupRadioButton; } set { _ValidateGroupRadioButton = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateGroupCheckBox;
        public string ValidateGroupCheckBox { get { return _ValidateGroupCheckBox; } set { _ValidateGroupCheckBox = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateCheckedListBox;
        public string ValidateCheckedListBox { get { return _ValidateCheckedListBox; } set { _ValidateCheckedListBox = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateListBox;
        public string ValidateListBox { get { return _ValidateListBox; } set { _ValidateListBox = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateCombobox;
        public string ValidateCombobox { get { return _ValidateCombobox; } set { _ValidateCombobox = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateBirthday;
        public string ValidateBirthday { get { return _ValidateBirthday; } set { _ValidateBirthday = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateBirthdayMin;
        public string ValidateBirthdayMin { get { return _ValidateBirthdayMin; } set { _ValidateBirthdayMin = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateBirthdayMax;
        public string ValidateBirthdayMax { get { return _ValidateBirthdayMax; } set { _ValidateBirthdayMax = value; if (AutoSave) SaveConfig(); } }

        private string _ValidatePhone;
        public string ValidatePhone { get { return _ValidatePhone; } set { _ValidatePhone = value; if (AutoSave) SaveConfig(); } }

        private string _ValidatePhoneMobile;
        public string ValidatePhoneMobile { get { return _ValidatePhoneMobile; } set { _ValidatePhoneMobile = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateText;
        public string ValidateText { get { return _ValidateText; } set { _ValidateText = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateTextMin;
        public string ValidateTextMin { get { return _ValidateTextMin; } set { _ValidateTextMin = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateTextMax;
        public string ValidateTextMax { get { return _ValidateTextMax; } set { _ValidateTextMax = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateEmail;
        public string ValidateEmail { get { return _ValidateEmail; } set { _ValidateEmail = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateMoney;
        public string ValidateMoney { get { return _ValidateMoney; } set { _ValidateMoney = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateMoneyMin;
        public string ValidateMoneyMin { get { return _ValidateMoneyMin; } set { _ValidateMoneyMin = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateMoneyMax;
        public string ValidateMoneytMax { get { return _ValidateMoneyMax; } set { _ValidateMoneyMax = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateNumber;
        public string ValidateNumber { get { return _ValidateNumber; } set { _ValidateNumber = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateNumberMin;
        public string ValidateNumberMin { get { return _ValidateNumberMin; } set { _ValidateNumberMin = value; if (AutoSave) SaveConfig(); } }

        private string _ValidateNumberMax;
        public string ValidateNumberMax { get { return _ValidateNumberMax; } set { _ValidateNumberMax = value; if (AutoSave) SaveConfig(); } }
    }	
}
